Clique sobre os tópicos listados abaixo para navegar até o conteúdo desejado.

  1. Comando switch
  2. Switch com strings
  3. Switch com enumerador
  4. Switch com múltiplos cases
  5. Switch com when e is
  6. Switch, when e expressões
  7. range ..

Para fazermos escolhas na linguagem C# , usamos o comando switch que irá comparar um valor a um grupo de outros valores e executar um trecho caso o retorno da comparação seja verdadeira.

O comando de escolha bem como o seu funcionamento já foi discutidos em Portugol: Comandos de Escolha sendo a leitura recomendada.

Os operadores relacionais e lógicos que podem ser utilizados como swtich podem ser vistos em C# : Operadores.

Para fazermos escolhas da linguagem de programação C#, utilizamos o comando switch que possui sua sintaxe apresentada abaixo. O comando switch utiliza o comando break como parte de sua sintaxe.

Fig. 1: Comando switch
Sintaxe
switch(condicao)
{
	case caso1: 
	        //seu codigo aqui
	break;
	case caso2: 
	        //seu codigo aqui
	break;
	default:
	        //seu codigo aqui
	break;
}
Onde
condicao: valor numérico, string, char, retorno de método ou expressão

O caso default é opcional. Com esse caso, podemos executar algum trecho de código caso o valor não seja igual a algum dos valores da cláusula case. Por boa prática é bom mantê-lo para identificação de erros.

Exemplo 1
using System;

public class Program
{
	public static void Main()
	{
		int valor = 1;

		switch(valor)
		{
			case 0:
				Console.WriteLine(0);
			break;
			case 1:
				Console.WriteLine(1);
			break;

			default: Console.WriteLine("Opcao invalida");
		}
	}
}
Saída
1

A linguagem C# permite também que strings sejam utilizandos nos cases do comando switch, não limitando-se apenas aos tipos inteiros.

Exemplo 2
using System;

public class Program
{
	public static void Main()
	{
		string str = "cmd";
		switch(str)
		{
			case "cmd":
				Console.WriteLine("cmd");
				break;
			default: //omitido
				break;            
		}
	}
}
Saída
cmd

A linguagem C#, assim como C/C++, permite que o switch tenha membros de enumeradores em seus cases. O tipo de dado enum pode ser visto em C#: Enum.

Exemplo 3
using System;
public class Program
{
	enum Enumerador 
	{
		Zero,
		Um,
		Dois,
		Tres
	}
	
	public static void Main()
	{
		Enumerador enm = Enumerador.Zero;

		switch(enm)
		{
			case Enumerador.Zero:
				Console.WriteLine(enm);
			break;
			default://omitido
			break;
		}
	}
}
Saída
Zero

Para a execução de um mesmo trecho de código para mais de um case, basta adicionar as cláusulas case em sequência ou "um abaixo do outra" sendo separadas por (:).

Exemplo 4
int valor = 1;
        
switch(valor)
{
    case 0:
    case 1:
        Console.WriteLine(1);
    break;
    //default omitido
}
Saída
1

C# possui os comandos when e is que podem ser utilizados em conjunto com o comando switch para checar o tipo de dado de um valor no case como mostrado na sintaxe logo abaixo:

Sintaxe
case tipo_dado nome_varialvel when nome_variavel is valor_comparacao 
Onde
-
Exemplo 4
enum Enumerador {
    Zero,
    Um,
    Dois,
    Tres
}
Enumerador enm = Enumerador.Zero;
        
switch(enm)
{
    case Enumerador e when e is Enumerador.Zero: 
        Console.WriteLine(e);
    break;
    default:
    break;
}
Saída
Zero

O comando when permite que expressões relacionais ou lógicas possam ser utilizadas nos cases do comando switch como pode ser visto nos exemplos abaixo:

Exemplo 5
using System;
public class Program
{
	enum Enumerador 
	{
			Zero,
			Um,
			Dois,
			Tres
	}
	
	public static void Main()
	{
		Enumerador enm = Enumerador.Zero;

		switch(enm)
		{
			case Enumerador e when (e == Enumerador.Zero || e == Enumerador.Um): 
				Console.WriteLine(e);
			break;
			default:
			break;
		}
	}
}
Saída
Zero
Exemplo 6
using System;
public class Program
{
	public static void Main()
	{
		int a = 10;
		switch(a)
		{
			case int val when (val >= 5): 
				Console.WriteLine(a);
			break;
			default:
			break;
		}
	}
}
Saída
10
  1. 05/08/2025 - revisão 2 - Ajustes: pontuais, 'objetivos', link 'Operadores' e sintaxes
  2. 14/10/2024 - revisão 1 - Correção: links portugol, exemplos; Ajustes pontuais
  3. 06/03/2024 - versão inicial